#include <iostream>
#include "string.h"
using namespace std;

/*
       2.  封装一个字符串类。该类中有如下成员方法(公有的):
               可以把字符串中小写字符转成大写
               可以逆序存放字符串
               剔除字符串中非英文字符
               class Mystring
               {
                public:
                      小写转大写;
                      可以逆序存放字符串
                      剔除字符串中非英文字符
                private:
                      你要使用的字符串 string str;
               }；


*/

class Mystring
{
public:
    Mystring(string s)
    {
        str = s;
    }
    void toUpper(); // 小写转大写
    void reverse(); // 可以逆序存放字符串
    void trim();    // 剔除字符串中非英文字符

private:
    string str;
};

void Mystring::toUpper()
{
    for (int i = 0; i < str.length(); i++)
    {
        if (str[i] >= 'a' && str[i] <= 'z')
        {
            str[i] -= 32;
        }
    }
    cout << str << endl;
}

void Mystring::reverse()
{
    for (int i = 0; i < str.length() / 2; i++)
    {
        char tmp = str[i];
        str[i] = str[str.length() - i - 1];
        str[str.length() - i - 1] = tmp;
    }
    cout << str << endl;
}

void Mystring::trim()
{
    for (int i = 0; i < str.length(); i++)
    {
        if ((str[i] < 'a' || str[i] > 'z') && (str[i] < 'A' || str[i] > 'Z'))
        {
            str.erase(i, 1);
            i--;
        }
    }
    cout << str << endl;
}

int main()
{
    Mystring s1("hello world!");
    s1.toUpper();

    Mystring s2("hello world!");
    s2.reverse();

    Mystring s3("hello world!");
    s3.trim();
}